@echo off
setlocal enabledelayedexpansion

:: 定义帮助信息
set HELP_MSG=使用方法: %0 [选项,可选-m,-j,-h] [参数...]


:: 默认启动方式为 mvn
set MODE=mvn
set ARGS=

:: 解析命令行参数
:parse_args
if "%~1"=="" goto end_parse

if "%~1"=="-h" goto show_help
if "%~1"=="--help" goto show_help
if "%~1"=="-m" (set "MODE=mvn" & shift & goto parse_args)
if "%~1"=="--mvn" (set "MODE=mvn" & shift & goto parse_args)
if "%~1"=="-j" (set "MODE=jar" & shift & goto parse_args)
if "%~1"=="--jar" (set "MODE=jar" & shift & goto parse_args)

:: 收集应用参数
set "ARGS=!ARGS! %~1"
shift
goto parse_args

:end_parse

:: 执行对应启动方式
if "%MODE%"=="mvn" (
  echo 正在使用 mvnw.cmd 启动应用...
  call mvnw.cmd spring-boot:run -Dspring-boot.run.arguments="%ARGS%"
  goto end
)

if "%MODE%"=="jar" (
  :: 查找最新的 JAR 文件 (假设在 target 目录)
  set "JAR_FILE="
  for /f "delims=" %%f in ('dir /b /o-d target\*.jar 2^>nul') do (
    if not defined JAR_FILE set "JAR_FILE=target\%%f"
  )
  
  if not defined JAR_FILE (
    echo 错误: 未找到 JAR 文件，请先执行 mvnw.cmd package 打包
    exit /b 1
  )
  
  echo 正在使用 JAR 文件启动: !JAR_FILE!
  java -jar "!JAR_FILE!" %ARGS%
  goto end
)

:show_help
echo %HELP_MSG%
goto end

:end
endlocal